var express = require('express')
var User = require('./models/user')
var md5 = require('blueimp-md5') //密码加密md5

var router = express.Router()

//处理注册②
router.post('/register', async function(req, res) {
    var body = req.body
    try {
        if (await User.findOne({ email: body.email })) {
            return res.status(200).json({
                err_code: 1,
                message: 'email already exists.'
            })
        }

        if (await User.findOne({ nickname: body.nickname })) {
            return res.status(200).json({
                err_code: 2,
                message: 'nickname already exists.'
            })
        }
        // 对密码进行 md5 重复加密
        body.password = md5(md5(body.password))
            // 创建用户，执行注册
        await new User(body).save()
            // 獲取body數據存進session
        req.session.user = body

        res.status(200).json({
            err_code: 0,
            message: 'OK'
        })
    } catch (err) {
        res.status(500).json({
            err_code: 500,
            message: err.message
        })
    }
})

router.get('/register', function(req, res) {
    res.render('register.html')
})

router.get('/login', function(req, res) {
    res.render('login.html')
})

router.post('/login', function(req, res, next) {

    var body = req.body

    User.findOne({
        email: body.email,
        password: md5(md5(body.password))
    }, function(err, user) {
        if (err) {
            // return res.status(500).json({
            //   err_code: 500,
            //   message: err.message
            // })
            return next(err)
        }

        // 如果邮箱和密码匹配，则 user 是查询到的用户对象，否则就是 null
        if (!user) {
            return res.status(200).json({
                err_code: 1,
                message: 'Email or password is invalid.'
            })
        }

        // 用户存在，登陆成功，通过 Session 记录登陆状态
        req.session.user = user

        res.status(200).json({
            err_code: 0,
            message: 'OK'
        })
    })
})

router.get('/logout', function(req, res) {
    // 清除登陆状态
    req.session.user = null

    // 重定向到登录页
    res.redirect('/login')
})

module.exports = router